This repository was archived by the owner on May 8, 2026. It is now read-only.
Ignore unknown Http3Setting Identifier in Http3SettingsFrame - #360
Merged
Conversation
* According to the spec https://www.rfc-editor.org/rfc/rfc9114.html#section-7.2.4-9 , endpoints **must ignore unknown settings identifiers**. Netty’s previous behavior incorrectly **stored** unknown settings values, which contradicts RFC behaviour. * A **HTTP/3 error code** was missing - H3_DATAGRAM_ERROR * The **SETTINGS_H3_DATAGRAM (0x33)** identifier was not added. * Prior behaviour fixed in [https://github.com/netty/netty/pull/15835](https://github.com/netty/netty/pull/15835) still allowed direct injection of unsupported settings; this PR effectively deprecates that direct-settings behaviour completely. --- * [x] **Ignore unknown HTTP/3 SETTINGS identifiers** * Updated parsing logic to skip unknown settings identifiers: ```java // When Non-Standard/Unknown settings identifier present - Ignore if (Http3SettingIdentifier.fromId(key) == null) { return value; } ``` * Unknown settings are **no longer stored** in `Http3Settings`. * Fully aligns with HTTP/3 specification behaviour. * Effectively **deprecates the old direct-settings behavior** introduced/fixed in PR #15835. * [x] **Added missing HTTP/3 error codes** * Implemented the remaining H3 error codes defined in the RFC. * Ensures accurate error propagation and complete protocol support. * [x] **Added `SETTINGS_H3_DATAGRAM (0x33)`** * Introduced the identifier: ```java SETTINGS_H3_DATAGRAM(0x33) ``` * Added proper handling in both encoder and decoder paths. * [x] **Added unit tests** * Tests covering: * Ignoring unknown setting identifiers * Correct handling of `SETTINGS_H3_DATAGRAM` * Verification of newly added error codes * Ensuring unknown settings do **not** appear in `Http3Settings` --- * [x] Netty now **correctly ignores unknown HTTP/3 settings**, as required by the specification. * [x] `Http3Settings` no longer stores invalid or non-standard identifiers. * [x] Full support for **`SETTINGS_H3_DATAGRAM (0x33)`**. * [x] Complete coverage of **HTTP/3 error codes**. * [x] Added unit tests ensure long-term correctness. * [x] Behaviour from PR #15835 is effectively superseded and corrected. Fixes #[15908](netty/netty#15908) Port of netty/netty#15909
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ignore unknown HTTP/3 SETTINGS identifiers
Updated parsing logic to skip unknown settings identifiers:
java // When Non-Standard/Unknown settings identifier present - Ignore if (Http3SettingIdentifier.fromId(key) == null) { return value; }Unknown settings are no longer stored in
Http3Settings.Fully aligns with HTTP/3 specification behaviour.
Effectively deprecates the old direct-settings behavior introduced/fixed in PR #15835.
Added missing HTTP/3 error codes
Added
SETTINGS_H3_DATAGRAM (0x33)Introduced the identifier:
java SETTINGS_H3_DATAGRAM(0x33)Added proper handling in both encoder and decoder paths.
Added unit tests
Tests covering:
SETTINGS_H3_DATAGRAMHttp3SettingsHttp3Settingsno longer stores invalid or non-standard identifiers.SETTINGS_H3_DATAGRAM (0x33).Fixes #15908 Port of netty/netty#15909